#ifndef UTIL_H
#define UTIL_H

#include <stdint.h>
#include <stdarg.h>

// 声明获取当前系统滴答数的函数
TickType_t GetSystemTicks(void);

typedef struct ReportTest{
	uint32_t ReportTestID;
} ReportTest;

#define DEBUG_LEVEL	DEBUG_LEVEL_DEBUG

typedef enum {
    DEBUG_LEVEL_ERROR = 0,
    DEBUG_LEVEL_WARNING,
    DEBUG_LEVEL_INFO,
    DEBUG_LEVEL_DEBUG,
    DEBUG_LEVEL_VERBOSE
} DebugLevel;

typedef struct {
    uint8_t type;      // 延迟类型
    uint32_t data[1];  // 固定大小的数组，这里仅作为示例
} DelayConfig;

// 声明打印时间戳的函数
void PrintTimestamp(char *buffer, size_t bufSize);

// 声明带时间戳的打印函数
void printWithTimestamp(const char *tag, const DebugLevel requiredLevel,  const char *format, ...);

//获取指定延迟类型的持续时间
uint32_t GetDelayDuration(uint8_t delayType, const DelayConfig* delays, size_t arraySize);

//test report类型
void sendReportTest(ReportTest* report_type, void* report, void(*callback)(void *, void *)); 

#endif // UTIL_H